package Collection;

import java.util.Comparator;
import java.util.TreeSet;
class Book /*implements Comparable*/{
    private  String isbn;//出版号
    private  String name;//书名

    public Book(String isbn, String name) {
        this.isbn = isbn;
        this.name = name;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "isbn=" + isbn +", name=" + name ;
    }
/*
    @Override
    public int compareTo(Object o) {
        //比较大小,一个对象是this，另一个是参数o
        //返回结果int
        //大于===正整数；小于===负整数；等于==0
        //比较isbn字符串String
        //判断o是和this对象使用同一个对象
        //o是null或o不是Book对象
        Book book= (Book) o;
        return this.isbn .compareTo(book.isbn)   ;
    }

 */
}
//方案2：自定义比较器类
class MyComparator implements Comparator{

    @Override
    public int compare(Object o1, Object o2) {
        //比较2个对象的大小
        //o1和o2
        //返回结果int
        //o1大于o2===正整数；小于===负整数；等于==0
        Book book1= (Book) o1;
        Book book2= (Book) o2;
        return book1.getIsbn().compareTo(book2.getIsbn());
    }
}
public class TestTreeSet {
    public static void main(String[] args) {
        TreeSet bookSet=new TreeSet(new MyComparator());//创建集合的时候，将自定义的比较器对象作为参数
        bookSet.add(new Book("100100","C语言程序设计"));
        bookSet.add(new Book("100101","Java语言程序设计"));
        bookSet.add(new Book("100102","python语言程序设计"));
        bookSet.add(new Book("100100","C语言程序设计"));//重复数据
        //set元素不重复

        System.out.println(bookSet);
    }
}
